package com.cmo.common.controller.patientqueue;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.cmo.common.model.Doctor;
import com.cmo.common.model.PatientQueue;
import com.cmo.common.model.QueueType;
import com.cmo.common.model.Triage;
import com.cmo.common.utils.Shared;
import com.cmo.common.utils.ToolString;
import com.jfinal.core.Controller;
import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record;

public class PatientQueueController extends Controller {
	
	PatientQueue service=new PatientQueue();
	QueueType qservice=new QueueType();
	Triage triage=new Triage();
	Shared shared=new Shared();
	Doctor doctor=new Doctor();

	
	/**
	 * 
	* @Title: Manual 
	* @Description: 手动录入患者
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void Manual(){
		Map<String, Object> map=new HashMap<String, Object>();
		//患者姓名
		String patientName=getPara("patientName");
		if(ToolString.isBlank(patientName)){
			map.put("return_msg", "请输入患者姓名");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		//
		//队列列表
		String QueueNumber=getPara("QueueNumber");
		if(ToolString.isBlank(QueueNumber)){
			map.put("return_msg", "请选择队列");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		
		//查询序号的最大值
		double record=service.findByQueueNum(QueueNumber);
		Record rd=new Record();
		rd.set("patient_name", patientName);
		rd.set("queue_type_id", QueueNumber);
		rd.set("queue_num", (int)record);
		rd.set("register_id", (int)record);
		rd.set("state_patient", "0");
		rd.set("sub_queue_order", 0);
		rd.set("is_display", 2);
		rd.set("time_interval",0);
		rd.set("patient_id", new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
		rd.set("opr_time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date()));
		
		boolean bool=Db.save("patient_queue", rd);
		if(!bool){
			map.put("return_msg", "手动添加患者失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "手动添加患者成功");
			map.put("return_code", "success");
			renderJson(map);
		}
		renderJson(map);
	}

	/**
	 * 
	* @Title: listPatient 
	* @Description: 患者列表
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void listPatient_wait(){
		Map<String, Object> map=new HashMap<String, Object>();
		//获取队列编号
		String QueueNumber=getPara("queue_number");
		if(ToolString.isBlank(QueueNumber)){
			map.put("return_msg", "没有获取到要查询的队列患者信息");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		
		//查询患者
		List<Record> list=service.listPatient(QueueNumber);
		if(null==list){
			map.put("return_msg", "查询患者列表失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "查询患者列表成功");
			map.put("return_code", "success");
			map.put("count", list.size());
			map.put("list", list);
			renderJson(map);
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: listPatient_pass 
	* @Description: TODO(未到过号患者) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void listPatient_pass(){
		Map<String, Object> map=new HashMap<String, Object>();
		//获取队列编号
		String QueueNumber=getPara("queue_number");
		if(ToolString.isBlank(QueueNumber)){
			map.put("return_msg", "没有获取到要查询的队列患者信息");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		//查询患者
		List<Record> list=service.listPatient_pass(QueueNumber);
		if(null==list){
			map.put("return_msg", "查询患者列表失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "查询患者列表成功");
			map.put("return_code", "success");
			map.put("count", list.size());
			map.put("list", list);
			renderJson(map);
		}
		renderJson(map);
	}
	
	/**
	 * 
	* @Title: listPatient_already 
	* @Description: TODO(已就诊) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void listPatient_already(){
		Map<String, Object> map=new HashMap<String, Object>();
		//获取队列编号
		String QueueNumber=getPara("queue_number");
		if(ToolString.isBlank(QueueNumber)){
			map.put("return_msg", "没有获取到要查询的队列患者信息");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		//查询患者
		List<Record> list=service.listPatient_already(QueueNumber);
		if(null==list){
			map.put("return_msg", "查询患者列表失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "查询患者列表成功");
			map.put("return_code", "success");
			map.put("count", list.size());
			map.put("list", list);
			renderJson(map);
		}
		renderJson(map);
	}
	/**
	 * 过号患者
	* @Title: listPatient_passno 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void listPatient_passno(){
		Map<String, Object> map=new HashMap<String, Object>();
		//获取队列编号
		String QueueNumber=getPara("queue_number");
		if(ToolString.isBlank(QueueNumber)){
			map.put("return_msg", "没有获取到要查询的队列患者信息");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		//查询患者
		List<Record> list=service.listPatient_passno(QueueNumber);
		if(null==list){
			map.put("return_msg", "查询患者列表失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "查询患者列表成功");
			map.put("return_code", "success");
			map.put("count", list.size());
			map.put("list", list);
			renderJson(map);
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: NewlyDiagnosed 
	* @Description: TODO(初诊) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void newlyDiagnosed(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getRequest().getParameter("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg", "请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);

		/*long count= Db.queryLong("select count(state_patient) from patient_queue where id in("+ids+") and state_patient=0");
		if(count>0){
			map.put("return_msg", "选择的患者中有本身为出诊的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}*/
		Integer num= service.NewlyDiagnosed(ids);
		if(num>0){
			map.put("return_msg", "修改患者初诊状态成功");
			map.put("return_code", "success");
			renderJson(map);
			;
		}else{
			map.put("return_code", "fail");
			map.put("return_msg", "修改患者初诊状态失败");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: passed 
	* @Description: TODO(过号) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void passed(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids =getRequest().getParameter("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg","请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		Integer num= service.passed(ids);
		if(num>0){
			map.put("return_msg","设置过号成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg","设置过号失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: Visit 
	* @Description: TODO(复诊) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void visit(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getPara("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_code", "fail");
			map.put("return_msg", "请先选择需要操作的患者");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		int num=Db.update("update patient_queue set state_patient=2,delay_time=NOW() where id in("+ids+")");
		if(num>0){
			map.put("return_msg", "设置患者复诊成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg", "设置患者复诊失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: GreenChannel 
	* @Description: TODO(绿色通道) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void GreenChannel(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getRequest().getParameter("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg", "请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		Integer num= service.GreenChannel(ids);
		if(num>0){
			map.put("return_msg", "设置绿色通道成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg", "设置绿色通道失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: delay 
	* @Description: TODO(患者延迟) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void delay(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getPara("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg", "请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		int times=getParaToInt("timeInterval",-1);
		
		if(times==-1){
			map.put("return_msg", "请填写需要需要延迟的时间");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		Integer num= service.delay(times,ids);
		if(num>0){
			map.put("return_msg", "设置患者延迟成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg", "设置患者延迟失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: Hang 
	* @Description: TODO(挂起) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void Hang(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getPara("ids");
		
		if(ToolString.isBlank(ids)){
			map.put("return_msg","请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		
		Integer num1=service.Hang(ids);
		if(num1>0){
			map.put("return_msg","设置患者挂起成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg","取消患者挂起失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: ReferralQueueType 
	* @Description: TODO(患者转诊（一个或者多个患者）到其他的队列中) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void referralQueueType(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getPara("ids");
		
		if(ToolString.isBlank(ids)){
			map.put("return_msg","请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		String queue_type_id=getPara("queue_type_id");
		if(ToolString.isBlank(queue_type_id)){
			map.put("return_msg","请选择需要转诊的队列");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		String doctor_id=getPara("id");
		if(ToolString.isBlank(doctor_id)){
			map.put("return_msg","请选择医生");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		//Record rd= service.quyeryByMaxRegister(queue_type_id);
		String rd=service.findmaxregisterid(queue_type_id);
		String register_id=null;
		if(ToolString.isBlank(rd)){
			register_id="转诊-1";
					//service.setRegisterId("转诊-1");
		}else{
			register_id=rd;
			String[] a=register_id.split("转诊-");
			register_id=a[1];
			int maxnum=Integer.parseInt(register_id)+1;
			register_id="转诊-"+String.valueOf(maxnum);
		}
		Integer num= service.ReferralQueueType(queue_type_id, ids,register_id,doctor_id);
		if(num>0){
			map.put("return_msg","转诊患者成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg","转诊患者失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	//扫描报道添加
	public void ScanAdd(){
		Map<String, Object> map=new HashMap<String, Object>();
		String code=getPara("code");
		if(ToolString.isBlank(code)){
			map.put("return_msg", "请刷卡或者手动输入患者卡号");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		String ip=shared.getIpAddr(getRequest());
		if(ToolString.isBlank(ip)){
			map.put("return_msg", "获取分诊台ip失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		
		//根据code 查询患者
		Record record= service.findCode(code,ip);
		if(null==record){
			map.put("return_msg", "此患者没有在当前分诊台下或者患者卡号输入错误");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		String is_display=record.getInt("is_display").toString();
		if("1".equals(is_display)){
			int disp= service.updatepatientqueuedislpay(code);
			if(disp>0){
				map.put("return_msg", "当前患者:"+record.getStr("patient_name")+"已成功报道在当前分诊台"+record.getStr("triage_name")+"下");
				map.put("return_code", "success");
				map.put("queue_type_id", record.getInt("queue_type_id"));
				map.put("id", record.getInt("id"));
				map.put("state_patient", record.get("state_patient"));
				renderJson(map);
			}else{
				map.put("return_msg", "患者报道失败");
				map.put("return_code", "fail");
				renderJson(map);
				return;
			}
		}else if("2".equals(is_display)){
			map.put("return_msg", "当前患者"+record.getStr("patient_name")+"在队列:"+record.getStr("queue_type_name")+"中");
			map.put("return_code", "success");
			map.put("queue_type_id", record.getInt("queue_type_id"));
			map.put("id", record.getInt("id"));
			map.put("state_patient", record.get("state_patient"));
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: patientFirst 
	* @Description: TODO(优先) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void patientFirst(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids =getPara("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_code", "fail");
			map.put("return_msg", "请选择患者后再操作");
			renderJson(map);
			return;
		}
		String queue_type_id=getPara("queue_type_id");
		if(ToolString.isBlank(queue_type_id)){
			map.put("return_code", "fail");
			map.put("return_msg", "获取队列id失败");
			renderJson(map);
			return;
		}
		
		Integer num= service.patientFirst(ids, queue_type_id);
		if(num>0){
			map.put("return_msg", "设置患者优先成功");
			map.put("return_code", "success");
			renderJson(map);
		}
		else{
			map.put("return_msg", "设置患者优先失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
	}
	
	/**
	 * 
	* @Title: queryByPager 
	* @Description: TODO(获取排班信息的pager) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void queryByPager(){
		Map<String, Object> map=new HashMap<String, Object>();
		Object ip=getSessionAttr("ip");
		if(null==ip||"".equals(ip)){
			map.put("return_msg", "没有获取到该分诊台的ip");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		List<Record> list_pager=service.queryByPager(ip);
		if(null==list_pager){
			map.put("return_msg", "查询排班信息失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}else{
			map.put("return_msg", "查询排班信息成功");
			map.put("return_code", "fail");
			map.put("list", list_pager);
			renderJson(map);
		}
	}
	//查询队列下的排班医生
	public void doctorId(){
	Map<String, Object> map=new HashMap<String, Object>();
	String queue_type_id=getPara("queue_type_id");
	if(ToolString.isBlank(queue_type_id)){
		map.put("return_msg", "队列id不能为空");
		map.put("return_code", "fail");
		renderJson(map);
		return;
	}
	//根据分诊台 客户端ip查询分诊台ip
	String triage_ip=shared.getIpAddr(getRequest());
	Record rt= triage.findTriage_ip(triage_ip);
	if(null==rt){
		map.put("return_code", "fail");
		map.put("return_msg", "查询分诊类型失败");
		renderJson(map);
		return;
	}
	//获取分诊台客服端所在的分针模式1医生    2叫号器
	String type=rt.get("triage_type").toString();
	
	//根据队列查询医生
	List<Record> list= service.finddoctorid(queue_type_id, type);
	if(null!=list){
		map.put("return_code", "success");
		map.put("return_msg", "当前队列排班医生信息查询成功");
		map.put("list", list);
		map.put("count", list.size());
		renderJson(map);
	}else{
		map.put("return_code", "fail");
		map.put("return_msg", "当前队列排班叫号器信息查询失败");
		renderJson(map);
		return;
	}
}
	/**
	 * 
	* @Title: examination 
	* @Description: TODO(分诊) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	
	public void examination(){
		Map<String, Object> map=new HashMap<String, Object>();
		//获取患者id
		String ids=getPara("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg", "请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		
		//根据分诊台 客户端ip查询分诊台ip
		String triage_ip=shared.getIpAddr(getRequest());
		Record rt= triage.findTriage_ip(triage_ip);
		if(null==rt){
			map.put("return_code", "fail");
			map.put("return_msg", "查询分诊类型失败");
			renderJson(map);
			return;
		}
		//获取分诊台客服端所在的分针模式1医生    2叫号器
		String type=rt.get("triage_type").toString();

		//获取前台传过来的队列id
		String queue_type_id=getPara("queue_type_id");
		if(ToolString.isBlank(queue_type_id)){
			map.put("return_msg", "队列id不能为空");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
	
		if("1".equals(type)){//获取医生
			String doctor_id=getPara("id").toString();
			if(ToolString.isBlank(doctor_id)){
				map.put("return_msg", "获取医生失败");
				map.put("return_code", "fail");
				renderJson(map);
				return;
			}else{
			 int num=service.examinationdoctor(doctor_id, ids, queue_type_id);
			 if(num>0){
					map.put("return_msg", "分诊成功");
					map.put("return_code", "success");
					renderJson(map);
				}else{
					map.put("return_msg", "分诊失败");
					map.put("return_code", "fail");
					renderJson(map);
					return;
				}
			}
		}
		else if("2".equals(type)){//获取叫号器
			String pager_id=getPara("id");
			if(ToolString.isBlank(pager_id)){
				map.put("return_msg", "获取队列获取叫号器失败");
				map.put("return_code", "fail");
				renderJson(map);
				return;
			}else{
				int num= service.examinationpager(pager_id, ids, queue_type_id);
				if(num>0){
					map.put("return_msg", "分诊成功");
					map.put("return_code", "fail");
					renderJson(map);
				}else{
					map.put("return_msg", "分诊失败");
					map.put("return_code", "fail");
					renderJson(map);
					return;
				}
			}
		}
		renderJson(map);
	}
	/**
	 * 
	* @Title: noexamination 
	* @Description: TODO(取消分诊) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	public void noexamination(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ids=getPara("ids");
		if(ToolString.isBlank(ids)){
			map.put("return_msg", "请选择需要操作的患者");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		ids = ids.substring(0,ids.length()-1);
		//根据分诊台 客户端ip查询分诊台ip
		String triage_ip=shared.getIpAddr(getRequest());
		Record rt= triage.findTriage_ip(triage_ip);
		if(null==rt){
			map.put("return_code", "fail");
			map.put("return_msg", "查询分诊类型失败");
			renderJson(map);
			return;
		}
		//获取分诊台客服端所在的分针模式1医生    2叫号器
		String type=rt.get("triage_type").toString();
		
		int num= service.noexamination(ids,type);
		if(num>0){
			map.put("return_msg", "取消分诊成功");
			map.put("return_code", "success");
			renderJson(map);
		}else{
			map.put("return_msg", "取消分诊失败");
			map.put("return_code", "fail");
			renderJson(map);
			return;
		}
		renderJson(map);
	}
	//查询当前呼叫患者
	public void list_patient_call(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ip=getPara("ip");
		if(ToolString.isBlank(ip)){
			map.put("return_code", "fail");
			map.put("return _msg", "获取IP失败");
			renderJson(map);
			return;
		}
		List<Record> list=service.list_patient_call(ip);
		if(null==list){
			map.put("return_code", "fail");
			map.put("return_msg", "查询失败");
			renderJson(map);
			return;
		}else{
			map.put("return_code", "success");
			map.put("return_msg", "查询成功");
			map.put("list", list);
			renderJson(map);
		}
		for(Record rd:list){
			service.updatecontent(rd.get("id").toString());
		}
		renderJson(map);
	}
	//根据分诊台的ip查询分诊类型 返回医生信息与叫号器信息
	public void list_queue_type(){
		Map<String, Object> map=new HashMap<String, Object>();
		//根据分诊台 客户端ip查询分诊台ip
		String triage_ip=shared.getIpAddr(getRequest());
		Record rt= triage.findTriage_ip(triage_ip);
		if(null==rt){
			map.put("return_code", "fail");
			map.put("return_msg", "查询分针类型失败");
			renderJson(map);
			return;
		}
		List<Record> list=triage.list_queue_type(triage_ip);
		if(null==list){
			map.put("return_code", "fail");
			map.put("return_msg", "查询失败");
			renderJson(map);
			return;
		}else{
			map.put("return_code", "success");
			map.put("return_msg", "医生队列信息成功");
			map.put("list", list);
			map.put("count", list.size());
			renderJson(map);	
		}
		renderJson(map);
	}
	//vf诊室门口等候
	public void list_roomdoor(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ip=getPara("ip");
		if(ToolString.isBlank(ip)){
			map.put("return_code", "fail");
			map.put("return_msg", "获取ip失败");
			renderJson(map);	
			return;
		}
		Record record= doctor.queryByip(ip);
		if(null==record){
			map.put("return_code", "fail");
			map.put("return_msg", "查询失败");
			renderJson(map);	
			return;
		}
		String doctor_id=record.getInt("doctor_id").toString();
		if(ToolString.isBlank(doctor_id)){
			map.put("return_code", "fail");
			map.put("return_msg", "获取医生id失败");
			renderJson(map);	
			return;
		}
		
		List<Record> list= service.list_room_door(doctor_id);
		if(null==list){
			map.put("return_code", "fail");
			map.put("return_msg", "查询患者等候列表失败");
			map.put("count", 0);
			renderJson(map);	
			return;
		}else{
			map.put("return_code", "success");
			map.put("return_msg", "查询成功");
			map.put("list", list);
			map.put("count", list.size());
			renderJson(map);
		}
		
		renderJson(map);
	}
	//vf诊室门口当前就诊
	public void list_roomdoor_jz(){
		Map<String, Object> map=new HashMap<String, Object>();
		String ip=getPara("ip");
		if(ToolString.isBlank(ip)){
			map.put("return_code", "fail");
			map.put("return_msg", "获取ip失败");
			renderJson(map);	
			return;
		}
		Record record= doctor.queryByip(ip);
		if(null==record){
			map.put("return_code", "fail");
			map.put("return_msg", "查询失败");
			renderJson(map);	
			return;
		}
		String doctor_id=record.getInt("doctor_id").toString();
		if(ToolString.isBlank(doctor_id)){
			map.put("return_code", "fail");
			map.put("return_msg", "获取医生id失败");
			renderJson(map);	
			return;
		}
		Record r= service.list_room_door_jz(doctor_id);
		if(null==r){
			map.put("return_code", "fail");
			map.put("return_msg", "查询当前就诊患者失败");
			renderJson(map);	
			return;
		}else{
				map.put("return_code", "success");
				map.put("return_msg", "查询成功");
				map.put("dqjz", r);
				System.out.println(r.getStr("caller"));
				renderJson(map);
		}
		service.updatecall(doctor_id);
		renderJson(map);
	}
}
